miad4.png

Hide code cell source
import os
# Por precaución, cambiamos el directorio activo de Python a aquel que contenga este notebook
if "PAD-book" in os.listdir():
    os.chdir(r"PAD-book/Laboratorio-Computacional-de-Analytics/S1 - Bienvenida, estructuras de datos y de control/S1.LE2/")

¿Por qué Python?#

Python es un lenguaje de propósito general y de alto nivel, lo cual lo hace muy versátil y fácil de usar sin mayor experiencia previa. Esto, sumado a la disponibilidad de librerías especializadas en análisis de datos, hace de Python una gran opción para abordar la programación en analítica de datos. Jupyter, por su parte, es un entorno interactivo de desarrollo para Python (y otros lenguajes) que opera desde la comodidad de cualquier navegador web, lo cual permite explorar datos fácilmente y generar documentos y aplicaciones interactivas.

Python – Un lenguaje que ofrece versatilidad y usabilidad#

Son muchas las discusiones sobre cuál es la herramienta más adecuada para el análisis de datos, desde productos licenciados como PowerBI o Tableau, hasta lenguajes de programación como Python o R. La mejor respuesta es: depende, porque, como hemos visto, son muchos los roles que se dan en el contexto de los datos. En algunos casos, las herramientas comerciales que no requieren programación por parte del usuario pueden ser suficientes. Sin embargo, cualquier profesional en análisis de datos debe tener un dominio básico de un lenguaje de programación de cabecera. Allí, son Python y R quienes marcan la pauta. En esta lectura veremos por qué el curso se enfoca en Python, resaltando algunas de sus ventajas en versatilidad y usabilidad.

Cuando se habla de programación en el contexto de análisis de datos, casi inmediatamente se piensa en Python y R; en algunos casos, quizá más especializados en programación científica, se incluye también Julia. La disyuntiva entre casarse con Python o R es difícil de resolver, ya que depende mucho del usuario y del propósito, y realmente no es tanto una disyuntiva, porque bien podrían usarse ambos de forma complementaria. A lo largo de este curso trabajaremos en Python, aunque los aprendizajes pueden extenderse a otros lenguajes de programación, salvo en asuntos de sintaxis.

Versatilidad#

Los defensores de Python suelen argumentar que “Python es el segundo mejor lenguaje en casi cualquier área” para llamar la atención (de forma jocosa) sobre su característica de ser un lenguaje de propósito general. Esto, por ejemplo, en contraste con R, que tiende a verse como un lenguaje concebido para tareas estadísticas y, por tanto, limitado en otros contextos.

Por su lado, Python se origina como un lenguaje de propósito general y es ampliamente usado por fuera del área de análisis de datos (ej., en desarrollo web, bases de datos, aplicaciones, computación científica, educación). También, por tratarse de open source software (de código libre) y debido a su popularidad, se han desarrollado muchas librerías que permiten usarlo en contextos especializados. En el área de análisis de datos, algunos de los desarrollos más importantes son: la librería pandas, que permite usar estructuras de datos similares a las de R; la librería seaborn, que facilita la visualización de datos para su análisis, junto a otras librerías especializadas en modelos estadísticos y de machine learning. El uso combinado de estas librerías en Python permite lograr las capacidades a nivel estadístico y de análisis de datos que se pueden tener en R, con la ventaja de tener mayor aplicabilidad por fuera del mundo del análisis de datos.

Recordemos que el análisis de datos es un área altamente interdisciplinar y transversal a muchos sectores y divisiones dentro de las organizaciones. Por esto, no es extraño que los desarrollos en análisis de datos deban interactuar con otros módulos (ej., aplicaciones web, algoritmos operativos, etc.), donde un lenguaje como Python se vuelve muy conveniente.

Usabilidad#

Una de las premisas detrás del desarrollo de Python era lograr una sintaxis elegante y sencilla, que fuera casi como escribir inglés. Por esa razón, es muy común ver cursos de iniciación a la programación en Python, precisamente porque la curva de aprendizaje se hace muy llevadera para personas sin experiencia previa. Esta simplificación ha contribuido a que el lenguaje se haya popularizado entre profesionales que se pueden valer de la programación sin alto nivel de experticia (o sin tener que dedicarle demasiado tiempo a los aspectos técnicos) y a que existan numerosas librerías, cada vez más sofisticadas, que apoyan el desarrollo de soluciones en múltiples industrias. Por supuesto, estas simplificaciones tienen un costo en términos de desempeño computacional (por tratarse de un lenguaje interpretado en lugar de compilado). Sin embargo, al momento de explorar datos o prototipar soluciones, estas limitaciones suelen ser menores y se pueden corregir al momento de desplegar soluciones, ya sea optimizando el código de Python o transfiriendo estos prototipos a otros lenguajes. El beneficio está en que Python se presta para el desarrollo rápido de prototipos en la etapa crítica de evaluar posibles soluciones mediante ensayo y error.

A pesar de lo anterior, muchos cursos de analitica de datos, sobre todo los que se enfocan en modelos estadísticos, suelen utilizar R (pues realmente se usa bastante en la práctica). Así, es recomendable que cada quien use aquel lenguaje con el que se sienta más cómodo. Para el propósito de este curso, el énfasis en la usabilidad que ofrece Python con la simplicidad y semántica de su sintaxis es un criterio que va más allá de lo estético. Mientras no se esté sacrificando funcionalidad y desempeño, resulta valioso que un profesional en analítica de datos sea sensible a la usabilidad, pues parte de su labor es diseñar herramientas de apoyo a la decisión, con interfaces de usuario simples y efectivas.

El ecosistema Python#

Más que pensar en Python, nuestra apuesta es por el material open source y aquí caben R, Python y Julia. Una razón importante para elegir este material es que no nos ata a un producto comercial y tiene amplio soporte de la comunidad: por una parte, constantemente se están desarrollando nuevos módulos y librerías útiles en diferentes contextos, o generando actualizaciones de librerías existentes; por otra parte, las comunidades activamente responden inquietudes en Internet sobre el uso del software, por lo cual es relativamente fácil encontrar soluciones a problemas que se puede encontrar un principiante, e incluso para problemas sorprendentemente especializados.

Uno de los retos que se encuentran los nuevos usuarios de Python es la variedad de herramientas disponibles, principalmente, los múltiples entornos desde los que se puede trabajar; también, la variedad de librerías y herramientas que existen alrededor de Python. La siguiente figura muestra un panorama general de este ecosistema.

ecoPy.png

  • En el centro encontramos a Python, que es el lenguaje y además lo que se conoce como el kernel: el software que interpreta el lenguaje y lo ejecuta en la máquina.

  • En la parte superior, se listan algunos entornos desde los cuales se puede usar o desarrollar código Python.

    • Típicamente, personas de perfil gerencial únicamente utilizan productos terminados, como aplicaciones web (ej., basadas en Django) o tableros de control desarrollados en las librerías dash o panel, entre otros.

    • Productos como Anaconda le facilitan al usuario su inmersión en Python. Proveen entornos como Spyder, que permite desarrollar scripts de código en archivos con extensión .py con funcionalidades para desarrollar y depurar código como cualquier IDE (Interactive Development Environment) del mercado. Adicionalmente, Anaconda permite acceder fácilmente a Jupyter, que es un entorno para desarrollar código Python en un navegador web a través de documentos interactivos (Jupyter Notebook) con extensión .ipynb, que combinan texto, imágenes, expresiones matemáticas, etc., con desarrollo de código que se puede ejecutar directamente en el documento.

    • Los programadores puristas suelen preferir entornos de desarrollo minimalistas, pues por lo general no quieren agregar un costo computacional al usar interfaces gráficas pesadas; ellos prefieren algo más cercano a un bloc de notas, pero con funcionalidades especiales para desarrollar y depurar código. Ejemplos de esto son Sublime, Atom o PyCharm; incluso, siendo aun más purista, se suele utilizar Vim desde la Consola o Terminal del computador.

  • En la parte inferior, se listan algunas librerías comunes que se instalan en el entorno de Python para extender sus capacidades. Python en si mismo es relativamente simple y permite programación a nivel general. Las librerías son las que lo enriquecen con funciones especializadas en matemáticas, gráficas, optimización, machine learning, entre muchos otros campos, como en nuestro caso, la analítica de datos.

¿Por qué Jupyter?#

En este curso, utilizaremos Jupyter porque nos interesa poder ejecutar código Python de forma interactiva en un navegador y combinarlo con texto enriquecido y contenido multimedia. De esta forma, es posible generar reportes con imágenes, ecuaciones y código Python ejecutable por bloques con visualización inmediata de resultados.

Estas características hacen de Jupyter una opción muy atractiva en el contexto de análisis de datos por ser un área en la que, más que programar rutinas pensadas para ejecutarse completas, se pasa buena parte del tiempo explorando y manipulando datos iterativamente, lo cual resulta muy práctico desde la interactividad que ofrece Jupyter.

Como ventajas adicionales, encontramos:

  1. existen plataformas como Anaconda, Google Colab, entre otras que permiten trabajar en archivos de Jupyter sin complicaciones de instalación (ya sea como aplicaciones de escritorio o servicios web);

  2. Jupyter permite ejecutar código en otros lenguajes además de Python; de hecho, su nombre proviene de las palabras Julia, Python y R (los lenguajes base que soporta).

En síntesis, Python es una opción muy recomendable para usuarios con poca experiencia en programación y, aunque parezca contradictorio, para usuarios con altas ambiciones o bagaje en programación que quieran ir más allá del análisis estadístico típico de R (ej., desarrollo web, aplicaciones, manejo de varios paradigmas de programación). Por otro lado, Jupyter es altamente versátil al poderse acceder desde cualquier navegador web y se desempeña bien en las tareas de analítica de datos por su interactividad y facilidad para generar reportes que comuniquen los resultados, más allá del código.

Créditos#

Autores: Camilo Hernando Gómez Castro, Alejandro Mantilla Redondo, Diego Alejandro Cely Gómez

Fecha última actualización: 07/07/2022